package cn.pdx.elec.dao.impl;

import java.sql.SQLException;
import java.util.List;

import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.stereotype.Repository;

import cn.pdx.elec.dao.ElecCommonMsgDao;
import cn.pdx.elec.domain.ElecCommonMsg;


/**
 * @Repository 、@Service 和 @Controller 
     在目前的 Spring 版本中，这 3 个注释和 @Component 是等效的，但是从注释类的命名上，3 个注释分别和持久层 、业务层 和控制层 相对应。
* @author 彭定旭
 *
 */
@Repository(ElecCommonMsgDao.SERVICE_NAME)
public class ElecCommonMsgDaoImpl extends CommonDaoImpl<ElecCommonMsg> implements ElecCommonMsgDao {


	/**
	 * @Name:findElecCommonMsgListByCurrentDate
	 * @Description:查询代办事宜当天列表
	 * @author 彭定旭
	 * @version：v1.00（版本号）
	 * @Create Date:2013-3-28(创建日期)
	 * @parameters:String currentDate 当前日期
	 * @return:List<ElecCommonMsgForm> 页面ElecCommonMsgForm VO对象
	 * 一般查询某些字段返回的是Object 类型数组,我是这么觉得.............
	 */
	@SuppressWarnings("unchecked")
	public List<Object[]> findElecCommonMsgListByCurrentDate(String currentDate) {
		
		final String sql="select o.stationRun as stationRun  ,o.devRun as devRun from elec_commonmsg o where o.createDate='"+currentDate+"'";
		
		//要调用底层方法
		List<Object[]> list=(List<Object[]>)this.getHibernateTemplate().execute(new HibernateCallback() {
			
			public Object doInHibernate(Session session) throws HibernateException,
					SQLException {
				
				/**
				 * 用标量类型查询,实际用得多......
				 */
				Query query=session.createSQLQuery(sql)
				.addScalar("stationRun",Hibernate.STRING)
				.addScalar("devRun",Hibernate.STRING);
				
				return query.list();
			}
		});
		return list;
	}

	
}
